import { createRouter, createWebHistory } from "vue-router";

import { useIndexStore } from "@/stores/indexStore";
import { useUseStore } from "@/stores/user";

// 直接导出所有模块配置的路由
const moduleFiles = import.meta.globEager("./modules/*.js");

// 通过 reduce 去搜集所有的模块的导出内容
const modulesRoutes = Object.keys(moduleFiles).reduce((routes, filepath) => {
  // 因为moduleFiles是一个函数，那么可以接受一个参数（string：文件的相对路径），调用其从而获取到对应路径下的模块的导出对象
  // 导出的对象中有一个属性：default，可以获取到默认导出的所有内容
  const value = moduleFiles[filepath].default;

  // 我们判断导出的是不是数组，是则进行拓展解构
  if (Array.isArray(value)) {
    routes.push(...value);
  } else {
    // 否则直接加到routes中
    routes.push(value);
  }
  return routes;
}, []);

const routes = [...modulesRoutes];

const router = createRouter({
  history: createWebHistory(),
  routes,
  // 路由行为配置项：每次切换路由回到页面顶部
  scrollBehavior() {
    return {
      top: 0,
    };
  },
});

const whileList = ["/loginHome", "/TocysValidate"];
router.beforeEach((to, from, next) => {
    if (to.name == "LoginHome") {
        useIndexStore().isConversionRateShow = false;
    } else {
        useIndexStore().isConversionRateShow = true;
    }

    const userStore = useUseStore();
    if (whileList.includes(to.path) || userStore.token) {
        // if (to.path === "/loginHome" || userStore.token !== "" || to.path === "/TocysValidate") {
        next();
    } else {
        next("/loginHome");
    }
});

export default router;
